// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗  
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝  
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// -----------------------------------------------
//  
// This file is automatically generated 
// Please do not edit these files manually
// Run the following in the root of the repos:
//
// 		*NIX 		:	./build.sh codegen
// 		Windows 	:	build.bat codegen
//
// -----------------------------------------------
// ReSharper disable RedundantUsingDirective
using System;
using System.Threading;
using System.Threading.Tasks;
using Elasticsearch.Net.Specification.IndicesApi;

// ReSharper disable once CheckNamespace
// ReSharper disable RedundantTypeArgumentsOfMethod
namespace Nest.Specification.IndicesApi
{
	///<summary>
	/// Indices APIs.
	/// <para>Not intended to be instantiated directly. Use the <see cref = "IElasticClient.Indices"/> property
	/// on <see cref = "IElasticClient"/>.
	///</para>
	///</summary>
	public class IndicesNamespace : NamespacedClientProxy
	{
		internal IndicesNamespace(ElasticClient client): base(client)
		{
		}

		/// <summary>
		/// <c>PUT</c> request to the <c>indices.add_block</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html</a>
		/// </summary>
		public AddIndexBlockResponse AddBlock(Indices index, IndexBlock block, Func<AddIndexBlockDescriptor, IAddIndexBlockRequest> selector = null) => AddBlock(selector.InvokeOrDefault(new AddIndexBlockDescriptor(index: index, block: block)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.add_block</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html</a>
		/// </summary>
		public Task<AddIndexBlockResponse> AddBlockAsync(Indices index, IndexBlock block, Func<AddIndexBlockDescriptor, IAddIndexBlockRequest> selector = null, CancellationToken ct = default) => AddBlockAsync(selector.InvokeOrDefault(new AddIndexBlockDescriptor(index: index, block: block)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.add_block</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html</a>
		/// </summary>
		public AddIndexBlockResponse AddBlock(IAddIndexBlockRequest request) => DoRequest<IAddIndexBlockRequest, AddIndexBlockResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.add_block</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-blocks.html</a>
		/// </summary>
		public Task<AddIndexBlockResponse> AddBlockAsync(IAddIndexBlockRequest request, CancellationToken ct = default) => DoRequestAsync<IAddIndexBlockRequest, AddIndexBlockResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.analyze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html</a>
		/// </summary>
		public AnalyzeResponse Analyze(Func<AnalyzeDescriptor, IAnalyzeRequest> selector = null) => Analyze(selector.InvokeOrDefault(new AnalyzeDescriptor()));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.analyze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html</a>
		/// </summary>
		public Task<AnalyzeResponse> AnalyzeAsync(Func<AnalyzeDescriptor, IAnalyzeRequest> selector = null, CancellationToken ct = default) => AnalyzeAsync(selector.InvokeOrDefault(new AnalyzeDescriptor()), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.analyze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html</a>
		/// </summary>
		public AnalyzeResponse Analyze(IAnalyzeRequest request) => DoRequest<IAnalyzeRequest, AnalyzeResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.analyze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-analyze.html</a>
		/// </summary>
		public Task<AnalyzeResponse> AnalyzeAsync(IAnalyzeRequest request, CancellationToken ct = default) => DoRequestAsync<IAnalyzeRequest, AnalyzeResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.clear_cache</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html</a>
		/// </summary>
		public ClearCacheResponse ClearCache(Indices index = null, Func<ClearCacheDescriptor, IClearCacheRequest> selector = null) => ClearCache(selector.InvokeOrDefault(new ClearCacheDescriptor().Index(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.clear_cache</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html</a>
		/// </summary>
		public Task<ClearCacheResponse> ClearCacheAsync(Indices index = null, Func<ClearCacheDescriptor, IClearCacheRequest> selector = null, CancellationToken ct = default) => ClearCacheAsync(selector.InvokeOrDefault(new ClearCacheDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.clear_cache</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html</a>
		/// </summary>
		public ClearCacheResponse ClearCache(IClearCacheRequest request) => DoRequest<IClearCacheRequest, ClearCacheResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.clear_cache</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clearcache.html</a>
		/// </summary>
		public Task<ClearCacheResponse> ClearCacheAsync(IClearCacheRequest request, CancellationToken ct = default) => DoRequestAsync<IClearCacheRequest, ClearCacheResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.clone</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html</a>
		/// </summary>
		public CloneIndexResponse Clone(IndexName index, IndexName target, Func<CloneIndexDescriptor, ICloneIndexRequest> selector = null) => Clone(selector.InvokeOrDefault(new CloneIndexDescriptor(index: index, target: target)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.clone</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html</a>
		/// </summary>
		public Task<CloneIndexResponse> CloneAsync(IndexName index, IndexName target, Func<CloneIndexDescriptor, ICloneIndexRequest> selector = null, CancellationToken ct = default) => CloneAsync(selector.InvokeOrDefault(new CloneIndexDescriptor(index: index, target: target)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.clone</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html</a>
		/// </summary>
		public CloneIndexResponse Clone(ICloneIndexRequest request) => DoRequest<ICloneIndexRequest, CloneIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.clone</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-clone-index.html</a>
		/// </summary>
		public Task<CloneIndexResponse> CloneAsync(ICloneIndexRequest request, CancellationToken ct = default) => DoRequestAsync<ICloneIndexRequest, CloneIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.close</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public CloseIndexResponse Close(Indices index, Func<CloseIndexDescriptor, ICloseIndexRequest> selector = null) => Close(selector.InvokeOrDefault(new CloseIndexDescriptor(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.close</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public Task<CloseIndexResponse> CloseAsync(Indices index, Func<CloseIndexDescriptor, ICloseIndexRequest> selector = null, CancellationToken ct = default) => CloseAsync(selector.InvokeOrDefault(new CloseIndexDescriptor(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.close</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public CloseIndexResponse Close(ICloseIndexRequest request) => DoRequest<ICloseIndexRequest, CloseIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.close</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public Task<CloseIndexResponse> CloseAsync(ICloseIndexRequest request, CancellationToken ct = default) => DoRequestAsync<ICloseIndexRequest, CloseIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html</a>
		/// </summary>
		public CreateIndexResponse Create(IndexName index, Func<CreateIndexDescriptor, ICreateIndexRequest> selector = null) => Create(selector.InvokeOrDefault(new CreateIndexDescriptor(index: index)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html</a>
		/// </summary>
		public Task<CreateIndexResponse> CreateAsync(IndexName index, Func<CreateIndexDescriptor, ICreateIndexRequest> selector = null, CancellationToken ct = default) => CreateAsync(selector.InvokeOrDefault(new CreateIndexDescriptor(index: index)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html</a>
		/// </summary>
		public CreateIndexResponse Create(ICreateIndexRequest request) => DoRequest<ICreateIndexRequest, CreateIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html</a>
		/// </summary>
		public Task<CreateIndexResponse> CreateAsync(ICreateIndexRequest request, CancellationToken ct = default) => DoRequestAsync<ICreateIndexRequest, CreateIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public CreateDataStreamResponse CreateDataStream(Name name, Func<CreateDataStreamDescriptor, ICreateDataStreamRequest> selector = null) => CreateDataStream(selector.InvokeOrDefault(new CreateDataStreamDescriptor(name: name)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<CreateDataStreamResponse> CreateDataStreamAsync(Name name, Func<CreateDataStreamDescriptor, ICreateDataStreamRequest> selector = null, CancellationToken ct = default) => CreateDataStreamAsync(selector.InvokeOrDefault(new CreateDataStreamDescriptor(name: name)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public CreateDataStreamResponse CreateDataStream(ICreateDataStreamRequest request) => DoRequest<ICreateDataStreamRequest, CreateDataStreamResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.create_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<CreateDataStreamResponse> CreateDataStreamAsync(ICreateDataStreamRequest request, CancellationToken ct = default) => DoRequestAsync<ICreateDataStreamRequest, CreateDataStreamResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.data_streams_stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public DataStreamsStatsResponse DataStreamsStats(Names name = null, Func<DataStreamsStatsDescriptor, IDataStreamsStatsRequest> selector = null) => DataStreamsStats(selector.InvokeOrDefault(new DataStreamsStatsDescriptor().Name(name: name)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.data_streams_stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<DataStreamsStatsResponse> DataStreamsStatsAsync(Names name = null, Func<DataStreamsStatsDescriptor, IDataStreamsStatsRequest> selector = null, CancellationToken ct = default) => DataStreamsStatsAsync(selector.InvokeOrDefault(new DataStreamsStatsDescriptor().Name(name: name)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.data_streams_stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public DataStreamsStatsResponse DataStreamsStats(IDataStreamsStatsRequest request) => DoRequest<IDataStreamsStatsRequest, DataStreamsStatsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.data_streams_stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<DataStreamsStatsResponse> DataStreamsStatsAsync(IDataStreamsStatsRequest request, CancellationToken ct = default) => DoRequestAsync<IDataStreamsStatsRequest, DataStreamsStatsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html</a>
		/// </summary>
		public DeleteIndexResponse Delete(Indices index, Func<DeleteIndexDescriptor, IDeleteIndexRequest> selector = null) => Delete(selector.InvokeOrDefault(new DeleteIndexDescriptor(index: index)));
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html</a>
		/// </summary>
		public Task<DeleteIndexResponse> DeleteAsync(Indices index, Func<DeleteIndexDescriptor, IDeleteIndexRequest> selector = null, CancellationToken ct = default) => DeleteAsync(selector.InvokeOrDefault(new DeleteIndexDescriptor(index: index)), ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html</a>
		/// </summary>
		public DeleteIndexResponse Delete(IDeleteIndexRequest request) => DoRequest<IDeleteIndexRequest, DeleteIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-delete-index.html</a>
		/// </summary>
		public Task<DeleteIndexResponse> DeleteAsync(IDeleteIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IDeleteIndexRequest, DeleteIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public DeleteAliasResponse DeleteAlias(Indices index, Names name, Func<DeleteAliasDescriptor, IDeleteAliasRequest> selector = null) => DeleteAlias(selector.InvokeOrDefault(new DeleteAliasDescriptor(index: index, name: name)));
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<DeleteAliasResponse> DeleteAliasAsync(Indices index, Names name, Func<DeleteAliasDescriptor, IDeleteAliasRequest> selector = null, CancellationToken ct = default) => DeleteAliasAsync(selector.InvokeOrDefault(new DeleteAliasDescriptor(index: index, name: name)), ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public DeleteAliasResponse DeleteAlias(IDeleteAliasRequest request) => DoRequest<IDeleteAliasRequest, DeleteAliasResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<DeleteAliasResponse> DeleteAliasAsync(IDeleteAliasRequest request, CancellationToken ct = default) => DoRequestAsync<IDeleteAliasRequest, DeleteAliasResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public DeleteDataStreamResponse DeleteDataStream(Names name, Func<DeleteDataStreamDescriptor, IDeleteDataStreamRequest> selector = null) => DeleteDataStream(selector.InvokeOrDefault(new DeleteDataStreamDescriptor(name: name)));
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<DeleteDataStreamResponse> DeleteDataStreamAsync(Names name, Func<DeleteDataStreamDescriptor, IDeleteDataStreamRequest> selector = null, CancellationToken ct = default) => DeleteDataStreamAsync(selector.InvokeOrDefault(new DeleteDataStreamDescriptor(name: name)), ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public DeleteDataStreamResponse DeleteDataStream(IDeleteDataStreamRequest request) => DoRequest<IDeleteDataStreamRequest, DeleteDataStreamResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<DeleteDataStreamResponse> DeleteDataStreamAsync(IDeleteDataStreamRequest request, CancellationToken ct = default) => DoRequestAsync<IDeleteDataStreamRequest, DeleteDataStreamResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public DeleteIndexTemplateResponse DeleteTemplate(Name name, Func<DeleteIndexTemplateDescriptor, IDeleteIndexTemplateRequest> selector = null) => DeleteTemplate(selector.InvokeOrDefault(new DeleteIndexTemplateDescriptor(name: name)));
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<DeleteIndexTemplateResponse> DeleteTemplateAsync(Name name, Func<DeleteIndexTemplateDescriptor, IDeleteIndexTemplateRequest> selector = null, CancellationToken ct = default) => DeleteTemplateAsync(selector.InvokeOrDefault(new DeleteIndexTemplateDescriptor(name: name)), ct);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public DeleteIndexTemplateResponse DeleteTemplate(IDeleteIndexTemplateRequest request) => DoRequest<IDeleteIndexTemplateRequest, DeleteIndexTemplateResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>DELETE</c> request to the <c>indices.delete_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<DeleteIndexTemplateResponse> DeleteTemplateAsync(IDeleteIndexTemplateRequest request, CancellationToken ct = default) => DoRequestAsync<IDeleteIndexTemplateRequest, DeleteIndexTemplateResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html</a>
		/// </summary>
		public ExistsResponse Exists(Indices index, Func<IndexExistsDescriptor, IIndexExistsRequest> selector = null) => Exists(selector.InvokeOrDefault(new IndexExistsDescriptor(index: index)));
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html</a>
		/// </summary>
		public Task<ExistsResponse> ExistsAsync(Indices index, Func<IndexExistsDescriptor, IIndexExistsRequest> selector = null, CancellationToken ct = default) => ExistsAsync(selector.InvokeOrDefault(new IndexExistsDescriptor(index: index)), ct);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html</a>
		/// </summary>
		public ExistsResponse Exists(IIndexExistsRequest request) => DoRequest<IIndexExistsRequest, ExistsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-exists.html</a>
		/// </summary>
		public Task<ExistsResponse> ExistsAsync(IIndexExistsRequest request, CancellationToken ct = default) => DoRequestAsync<IIndexExistsRequest, ExistsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public ExistsResponse AliasExists(Names name, Func<AliasExistsDescriptor, IAliasExistsRequest> selector = null) => AliasExists(selector.InvokeOrDefault(new AliasExistsDescriptor(name: name)));
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<ExistsResponse> AliasExistsAsync(Names name, Func<AliasExistsDescriptor, IAliasExistsRequest> selector = null, CancellationToken ct = default) => AliasExistsAsync(selector.InvokeOrDefault(new AliasExistsDescriptor(name: name)), ct);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public ExistsResponse AliasExists(IAliasExistsRequest request) => DoRequest<IAliasExistsRequest, ExistsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<ExistsResponse> AliasExistsAsync(IAliasExistsRequest request, CancellationToken ct = default) => DoRequestAsync<IAliasExistsRequest, ExistsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public ExistsResponse TemplateExists(Names name, Func<IndexTemplateExistsDescriptor, IIndexTemplateExistsRequest> selector = null) => TemplateExists(selector.InvokeOrDefault(new IndexTemplateExistsDescriptor(name: name)));
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<ExistsResponse> TemplateExistsAsync(Names name, Func<IndexTemplateExistsDescriptor, IIndexTemplateExistsRequest> selector = null, CancellationToken ct = default) => TemplateExistsAsync(selector.InvokeOrDefault(new IndexTemplateExistsDescriptor(name: name)), ct);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public ExistsResponse TemplateExists(IIndexTemplateExistsRequest request) => DoRequest<IIndexTemplateExistsRequest, ExistsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>HEAD</c> request to the <c>indices.exists_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<ExistsResponse> TemplateExistsAsync(IIndexTemplateExistsRequest request, CancellationToken ct = default) => DoRequestAsync<IIndexTemplateExistsRequest, ExistsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.flush</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html</a>
		/// </summary>
		public FlushResponse Flush(Indices index = null, Func<FlushDescriptor, IFlushRequest> selector = null) => Flush(selector.InvokeOrDefault(new FlushDescriptor().Index(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.flush</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html</a>
		/// </summary>
		public Task<FlushResponse> FlushAsync(Indices index = null, Func<FlushDescriptor, IFlushRequest> selector = null, CancellationToken ct = default) => FlushAsync(selector.InvokeOrDefault(new FlushDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.flush</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html</a>
		/// </summary>
		public FlushResponse Flush(IFlushRequest request) => DoRequest<IFlushRequest, FlushResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.flush</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-flush.html</a>
		/// </summary>
		public Task<FlushResponse> FlushAsync(IFlushRequest request, CancellationToken ct = default) => DoRequestAsync<IFlushRequest, FlushResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.forcemerge</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html</a>
		/// </summary>
		public ForceMergeResponse ForceMerge(Indices index = null, Func<ForceMergeDescriptor, IForceMergeRequest> selector = null) => ForceMerge(selector.InvokeOrDefault(new ForceMergeDescriptor().Index(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.forcemerge</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html</a>
		/// </summary>
		public Task<ForceMergeResponse> ForceMergeAsync(Indices index = null, Func<ForceMergeDescriptor, IForceMergeRequest> selector = null, CancellationToken ct = default) => ForceMergeAsync(selector.InvokeOrDefault(new ForceMergeDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.forcemerge</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html</a>
		/// </summary>
		public ForceMergeResponse ForceMerge(IForceMergeRequest request) => DoRequest<IForceMergeRequest, ForceMergeResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.forcemerge</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html</a>
		/// </summary>
		public Task<ForceMergeResponse> ForceMergeAsync(IForceMergeRequest request, CancellationToken ct = default) => DoRequestAsync<IForceMergeRequest, ForceMergeResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.freeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html</a>
		/// </summary>
		public FreezeIndexResponse Freeze(IndexName index, Func<FreezeIndexDescriptor, IFreezeIndexRequest> selector = null) => Freeze(selector.InvokeOrDefault(new FreezeIndexDescriptor(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.freeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html</a>
		/// </summary>
		public Task<FreezeIndexResponse> FreezeAsync(IndexName index, Func<FreezeIndexDescriptor, IFreezeIndexRequest> selector = null, CancellationToken ct = default) => FreezeAsync(selector.InvokeOrDefault(new FreezeIndexDescriptor(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.freeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html</a>
		/// </summary>
		public FreezeIndexResponse Freeze(IFreezeIndexRequest request) => DoRequest<IFreezeIndexRequest, FreezeIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.freeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/freeze-index-api.html</a>
		/// </summary>
		public Task<FreezeIndexResponse> FreezeAsync(IFreezeIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IFreezeIndexRequest, FreezeIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html</a>
		/// </summary>
		public GetIndexResponse Get(Indices index, Func<GetIndexDescriptor, IGetIndexRequest> selector = null) => Get(selector.InvokeOrDefault(new GetIndexDescriptor(index: index)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html</a>
		/// </summary>
		public Task<GetIndexResponse> GetAsync(Indices index, Func<GetIndexDescriptor, IGetIndexRequest> selector = null, CancellationToken ct = default) => GetAsync(selector.InvokeOrDefault(new GetIndexDescriptor(index: index)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html</a>
		/// </summary>
		public GetIndexResponse Get(IGetIndexRequest request) => DoRequest<IGetIndexRequest, GetIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-index.html</a>
		/// </summary>
		public Task<GetIndexResponse> GetAsync(IGetIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IGetIndexRequest, GetIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public GetAliasResponse GetAlias(Indices index = null, Func<GetAliasDescriptor, IGetAliasRequest> selector = null) => GetAlias(selector.InvokeOrDefault(new GetAliasDescriptor().Index(index: index)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<GetAliasResponse> GetAliasAsync(Indices index = null, Func<GetAliasDescriptor, IGetAliasRequest> selector = null, CancellationToken ct = default) => GetAliasAsync(selector.InvokeOrDefault(new GetAliasDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public GetAliasResponse GetAlias(IGetAliasRequest request) => DoRequest<IGetAliasRequest, GetAliasResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<GetAliasResponse> GetAliasAsync(IGetAliasRequest request, CancellationToken ct = default) => DoRequestAsync<IGetAliasRequest, GetAliasResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public GetDataStreamResponse GetDataStream(Names name = null, Func<GetDataStreamDescriptor, IGetDataStreamRequest> selector = null) => GetDataStream(selector.InvokeOrDefault(new GetDataStreamDescriptor().Name(name: name)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<GetDataStreamResponse> GetDataStreamAsync(Names name = null, Func<GetDataStreamDescriptor, IGetDataStreamRequest> selector = null, CancellationToken ct = default) => GetDataStreamAsync(selector.InvokeOrDefault(new GetDataStreamDescriptor().Name(name: name)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public GetDataStreamResponse GetDataStream(IGetDataStreamRequest request) => DoRequest<IGetDataStreamRequest, GetDataStreamResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_data_stream</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/data-streams.html</a>
		/// </summary>
		public Task<GetDataStreamResponse> GetDataStreamAsync(IGetDataStreamRequest request, CancellationToken ct = default) => DoRequestAsync<IGetDataStreamRequest, GetDataStreamResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_field_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html</a>
		/// </summary>
		public GetFieldMappingResponse GetFieldMapping<TDocument>(Fields fields, Func<GetFieldMappingDescriptor<TDocument>, IGetFieldMappingRequest> selector = null)
			where TDocument : class => GetFieldMapping(selector.InvokeOrDefault(new GetFieldMappingDescriptor<TDocument>(fields: fields)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_field_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html</a>
		/// </summary>
		public Task<GetFieldMappingResponse> GetFieldMappingAsync<TDocument>(Fields fields, Func<GetFieldMappingDescriptor<TDocument>, IGetFieldMappingRequest> selector = null, CancellationToken ct = default)
			where TDocument : class => GetFieldMappingAsync(selector.InvokeOrDefault(new GetFieldMappingDescriptor<TDocument>(fields: fields)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_field_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html</a>
		/// </summary>
		public GetFieldMappingResponse GetFieldMapping(IGetFieldMappingRequest request) => DoRequest<IGetFieldMappingRequest, GetFieldMappingResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_field_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-field-mapping.html</a>
		/// </summary>
		public Task<GetFieldMappingResponse> GetFieldMappingAsync(IGetFieldMappingRequest request, CancellationToken ct = default) => DoRequestAsync<IGetFieldMappingRequest, GetFieldMappingResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html</a>
		/// </summary>
		public GetMappingResponse GetMapping<TDocument>(Func<GetMappingDescriptor<TDocument>, IGetMappingRequest> selector = null)
			where TDocument : class => GetMapping(selector.InvokeOrDefault(new GetMappingDescriptor<TDocument>()));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html</a>
		/// </summary>
		public Task<GetMappingResponse> GetMappingAsync<TDocument>(Func<GetMappingDescriptor<TDocument>, IGetMappingRequest> selector = null, CancellationToken ct = default)
			where TDocument : class => GetMappingAsync(selector.InvokeOrDefault(new GetMappingDescriptor<TDocument>()), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html</a>
		/// </summary>
		public GetMappingResponse GetMapping(IGetMappingRequest request) => DoRequest<IGetMappingRequest, GetMappingResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html</a>
		/// </summary>
		public Task<GetMappingResponse> GetMappingAsync(IGetMappingRequest request, CancellationToken ct = default) => DoRequestAsync<IGetMappingRequest, GetMappingResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html</a>
		/// </summary>
		public GetIndexSettingsResponse GetSettings(Indices index = null, Func<GetIndexSettingsDescriptor, IGetIndexSettingsRequest> selector = null) => GetSettings(selector.InvokeOrDefault(new GetIndexSettingsDescriptor().Index(index: index)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html</a>
		/// </summary>
		public Task<GetIndexSettingsResponse> GetSettingsAsync(Indices index = null, Func<GetIndexSettingsDescriptor, IGetIndexSettingsRequest> selector = null, CancellationToken ct = default) => GetSettingsAsync(selector.InvokeOrDefault(new GetIndexSettingsDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html</a>
		/// </summary>
		public GetIndexSettingsResponse GetSettings(IGetIndexSettingsRequest request) => DoRequest<IGetIndexSettingsRequest, GetIndexSettingsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-settings.html</a>
		/// </summary>
		public Task<GetIndexSettingsResponse> GetSettingsAsync(IGetIndexSettingsRequest request, CancellationToken ct = default) => DoRequestAsync<IGetIndexSettingsRequest, GetIndexSettingsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public GetIndexTemplateResponse GetTemplate(Names name = null, Func<GetIndexTemplateDescriptor, IGetIndexTemplateRequest> selector = null) => GetTemplate(selector.InvokeOrDefault(new GetIndexTemplateDescriptor().Name(name: name)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<GetIndexTemplateResponse> GetTemplateAsync(Names name = null, Func<GetIndexTemplateDescriptor, IGetIndexTemplateRequest> selector = null, CancellationToken ct = default) => GetTemplateAsync(selector.InvokeOrDefault(new GetIndexTemplateDescriptor().Name(name: name)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public GetIndexTemplateResponse GetTemplate(IGetIndexTemplateRequest request) => DoRequest<IGetIndexTemplateRequest, GetIndexTemplateResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.get_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<GetIndexTemplateResponse> GetTemplateAsync(IGetIndexTemplateRequest request, CancellationToken ct = default) => DoRequestAsync<IGetIndexTemplateRequest, GetIndexTemplateResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.open</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public OpenIndexResponse Open(Indices index, Func<OpenIndexDescriptor, IOpenIndexRequest> selector = null) => Open(selector.InvokeOrDefault(new OpenIndexDescriptor(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.open</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public Task<OpenIndexResponse> OpenAsync(Indices index, Func<OpenIndexDescriptor, IOpenIndexRequest> selector = null, CancellationToken ct = default) => OpenAsync(selector.InvokeOrDefault(new OpenIndexDescriptor(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.open</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public OpenIndexResponse Open(IOpenIndexRequest request) => DoRequest<IOpenIndexRequest, OpenIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.open</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html</a>
		/// </summary>
		public Task<OpenIndexResponse> OpenAsync(IOpenIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IOpenIndexRequest, OpenIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public PutAliasResponse PutAlias(Indices index, Name name, Func<PutAliasDescriptor, IPutAliasRequest> selector = null) => PutAlias(selector.InvokeOrDefault(new PutAliasDescriptor(index: index, name: name)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<PutAliasResponse> PutAliasAsync(Indices index, Name name, Func<PutAliasDescriptor, IPutAliasRequest> selector = null, CancellationToken ct = default) => PutAliasAsync(selector.InvokeOrDefault(new PutAliasDescriptor(index: index, name: name)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public PutAliasResponse PutAlias(IPutAliasRequest request) => DoRequest<IPutAliasRequest, PutAliasResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_alias</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<PutAliasResponse> PutAliasAsync(IPutAliasRequest request, CancellationToken ct = default) => DoRequestAsync<IPutAliasRequest, PutAliasResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html</a>
		/// </summary>
		public PutMappingResponse PutMapping<TDocument>(Func<PutMappingDescriptor<TDocument>, IPutMappingRequest> selector)
			where TDocument : class => PutMapping(selector.InvokeOrDefault(new PutMappingDescriptor<TDocument>()));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html</a>
		/// </summary>
		public Task<PutMappingResponse> PutMappingAsync<TDocument>(Func<PutMappingDescriptor<TDocument>, IPutMappingRequest> selector, CancellationToken ct = default)
			where TDocument : class => PutMappingAsync(selector.InvokeOrDefault(new PutMappingDescriptor<TDocument>()), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html</a>
		/// </summary>
		public PutMappingResponse PutMapping(IPutMappingRequest request) => DoRequest<IPutMappingRequest, PutMappingResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_mapping</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html</a>
		/// </summary>
		public Task<PutMappingResponse> PutMappingAsync(IPutMappingRequest request, CancellationToken ct = default) => DoRequestAsync<IPutMappingRequest, PutMappingResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html</a>
		/// </summary>
		public UpdateIndexSettingsResponse UpdateSettings(Indices index, Func<UpdateIndexSettingsDescriptor, IUpdateIndexSettingsRequest> selector) => UpdateSettings(selector.InvokeOrDefault(new UpdateIndexSettingsDescriptor().Index(index: index)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html</a>
		/// </summary>
		public Task<UpdateIndexSettingsResponse> UpdateSettingsAsync(Indices index, Func<UpdateIndexSettingsDescriptor, IUpdateIndexSettingsRequest> selector, CancellationToken ct = default) => UpdateSettingsAsync(selector.InvokeOrDefault(new UpdateIndexSettingsDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html</a>
		/// </summary>
		public UpdateIndexSettingsResponse UpdateSettings(IUpdateIndexSettingsRequest request) => DoRequest<IUpdateIndexSettingsRequest, UpdateIndexSettingsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_settings</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-update-settings.html</a>
		/// </summary>
		public Task<UpdateIndexSettingsResponse> UpdateSettingsAsync(IUpdateIndexSettingsRequest request, CancellationToken ct = default) => DoRequestAsync<IUpdateIndexSettingsRequest, UpdateIndexSettingsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public PutIndexTemplateResponse PutTemplate(Name name, Func<PutIndexTemplateDescriptor, IPutIndexTemplateRequest> selector) => PutTemplate(selector.InvokeOrDefault(new PutIndexTemplateDescriptor(name: name)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<PutIndexTemplateResponse> PutTemplateAsync(Name name, Func<PutIndexTemplateDescriptor, IPutIndexTemplateRequest> selector, CancellationToken ct = default) => PutTemplateAsync(selector.InvokeOrDefault(new PutIndexTemplateDescriptor(name: name)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public PutIndexTemplateResponse PutTemplate(IPutIndexTemplateRequest request) => DoRequest<IPutIndexTemplateRequest, PutIndexTemplateResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.put_template</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</a>
		/// </summary>
		public Task<PutIndexTemplateResponse> PutTemplateAsync(IPutIndexTemplateRequest request, CancellationToken ct = default) => DoRequestAsync<IPutIndexTemplateRequest, PutIndexTemplateResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.recovery</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html</a>
		/// </summary>
		public RecoveryStatusResponse RecoveryStatus(Indices index = null, Func<RecoveryStatusDescriptor, IRecoveryStatusRequest> selector = null) => RecoveryStatus(selector.InvokeOrDefault(new RecoveryStatusDescriptor().Index(index: index)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.recovery</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html</a>
		/// </summary>
		public Task<RecoveryStatusResponse> RecoveryStatusAsync(Indices index = null, Func<RecoveryStatusDescriptor, IRecoveryStatusRequest> selector = null, CancellationToken ct = default) => RecoveryStatusAsync(selector.InvokeOrDefault(new RecoveryStatusDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.recovery</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html</a>
		/// </summary>
		public RecoveryStatusResponse RecoveryStatus(IRecoveryStatusRequest request) => DoRequest<IRecoveryStatusRequest, RecoveryStatusResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.recovery</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-recovery.html</a>
		/// </summary>
		public Task<RecoveryStatusResponse> RecoveryStatusAsync(IRecoveryStatusRequest request, CancellationToken ct = default) => DoRequestAsync<IRecoveryStatusRequest, RecoveryStatusResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.refresh</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html</a>
		/// </summary>
		public RefreshResponse Refresh(Indices index = null, Func<RefreshDescriptor, IRefreshRequest> selector = null) => Refresh(selector.InvokeOrDefault(new RefreshDescriptor().Index(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.refresh</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html</a>
		/// </summary>
		public Task<RefreshResponse> RefreshAsync(Indices index = null, Func<RefreshDescriptor, IRefreshRequest> selector = null, CancellationToken ct = default) => RefreshAsync(selector.InvokeOrDefault(new RefreshDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.refresh</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html</a>
		/// </summary>
		public RefreshResponse Refresh(IRefreshRequest request) => DoRequest<IRefreshRequest, RefreshResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.refresh</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html</a>
		/// </summary>
		public Task<RefreshResponse> RefreshAsync(IRefreshRequest request, CancellationToken ct = default) => DoRequestAsync<IRefreshRequest, RefreshResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
		/// </summary>
		public ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(Indices index, Func<ReloadSearchAnalyzersDescriptor, IReloadSearchAnalyzersRequest> selector = null) => ReloadSearchAnalyzers(selector.InvokeOrDefault(new ReloadSearchAnalyzersDescriptor(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
		/// </summary>
		public Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(Indices index, Func<ReloadSearchAnalyzersDescriptor, IReloadSearchAnalyzersRequest> selector = null, CancellationToken ct = default) => ReloadSearchAnalyzersAsync(selector.InvokeOrDefault(new ReloadSearchAnalyzersDescriptor(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
		/// </summary>
		public ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(IReloadSearchAnalyzersRequest request) => DoRequest<IReloadSearchAnalyzersRequest, ReloadSearchAnalyzersResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
		/// </summary>
		public Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(IReloadSearchAnalyzersRequest request, CancellationToken ct = default) => DoRequestAsync<IReloadSearchAnalyzersRequest, ReloadSearchAnalyzersResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.resolve_index</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html</a>
		/// </summary>
		public ResolveIndexResponse Resolve(Names name, Func<ResolveIndexDescriptor, IResolveIndexRequest> selector = null) => Resolve(selector.InvokeOrDefault(new ResolveIndexDescriptor(name: name)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.resolve_index</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html</a>
		/// </summary>
		public Task<ResolveIndexResponse> ResolveAsync(Names name, Func<ResolveIndexDescriptor, IResolveIndexRequest> selector = null, CancellationToken ct = default) => ResolveAsync(selector.InvokeOrDefault(new ResolveIndexDescriptor(name: name)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.resolve_index</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html</a>
		/// </summary>
		public ResolveIndexResponse Resolve(IResolveIndexRequest request) => DoRequest<IResolveIndexRequest, ResolveIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.resolve_index</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-resolve-index-api.html</a>
		/// </summary>
		public Task<ResolveIndexResponse> ResolveAsync(IResolveIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IResolveIndexRequest, ResolveIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.rollover</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html</a>
		/// </summary>
		public RolloverIndexResponse Rollover(Name alias, Func<RolloverIndexDescriptor, IRolloverIndexRequest> selector = null) => Rollover(selector.InvokeOrDefault(new RolloverIndexDescriptor(alias: alias)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.rollover</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html</a>
		/// </summary>
		public Task<RolloverIndexResponse> RolloverAsync(Name alias, Func<RolloverIndexDescriptor, IRolloverIndexRequest> selector = null, CancellationToken ct = default) => RolloverAsync(selector.InvokeOrDefault(new RolloverIndexDescriptor(alias: alias)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.rollover</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html</a>
		/// </summary>
		public RolloverIndexResponse Rollover(IRolloverIndexRequest request) => DoRequest<IRolloverIndexRequest, RolloverIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.rollover</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html</a>
		/// </summary>
		public Task<RolloverIndexResponse> RolloverAsync(IRolloverIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IRolloverIndexRequest, RolloverIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.segments</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html</a>
		/// </summary>
		public SegmentsResponse Segments(Indices index = null, Func<SegmentsDescriptor, ISegmentsRequest> selector = null) => Segments(selector.InvokeOrDefault(new SegmentsDescriptor().Index(index: index)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.segments</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html</a>
		/// </summary>
		public Task<SegmentsResponse> SegmentsAsync(Indices index = null, Func<SegmentsDescriptor, ISegmentsRequest> selector = null, CancellationToken ct = default) => SegmentsAsync(selector.InvokeOrDefault(new SegmentsDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.segments</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html</a>
		/// </summary>
		public SegmentsResponse Segments(ISegmentsRequest request) => DoRequest<ISegmentsRequest, SegmentsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.segments</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-segments.html</a>
		/// </summary>
		public Task<SegmentsResponse> SegmentsAsync(ISegmentsRequest request, CancellationToken ct = default) => DoRequestAsync<ISegmentsRequest, SegmentsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.shard_stores</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html</a>
		/// </summary>
		public IndicesShardStoresResponse ShardStores(Indices index = null, Func<IndicesShardStoresDescriptor, IIndicesShardStoresRequest> selector = null) => ShardStores(selector.InvokeOrDefault(new IndicesShardStoresDescriptor().Index(index: index)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.shard_stores</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html</a>
		/// </summary>
		public Task<IndicesShardStoresResponse> ShardStoresAsync(Indices index = null, Func<IndicesShardStoresDescriptor, IIndicesShardStoresRequest> selector = null, CancellationToken ct = default) => ShardStoresAsync(selector.InvokeOrDefault(new IndicesShardStoresDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.shard_stores</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html</a>
		/// </summary>
		public IndicesShardStoresResponse ShardStores(IIndicesShardStoresRequest request) => DoRequest<IIndicesShardStoresRequest, IndicesShardStoresResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.shard_stores</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shards-stores.html</a>
		/// </summary>
		public Task<IndicesShardStoresResponse> ShardStoresAsync(IIndicesShardStoresRequest request, CancellationToken ct = default) => DoRequestAsync<IIndicesShardStoresRequest, IndicesShardStoresResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.shrink</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html</a>
		/// </summary>
		public ShrinkIndexResponse Shrink(IndexName index, IndexName target, Func<ShrinkIndexDescriptor, IShrinkIndexRequest> selector = null) => Shrink(selector.InvokeOrDefault(new ShrinkIndexDescriptor(index: index, target: target)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.shrink</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html</a>
		/// </summary>
		public Task<ShrinkIndexResponse> ShrinkAsync(IndexName index, IndexName target, Func<ShrinkIndexDescriptor, IShrinkIndexRequest> selector = null, CancellationToken ct = default) => ShrinkAsync(selector.InvokeOrDefault(new ShrinkIndexDescriptor(index: index, target: target)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.shrink</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html</a>
		/// </summary>
		public ShrinkIndexResponse Shrink(IShrinkIndexRequest request) => DoRequest<IShrinkIndexRequest, ShrinkIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.shrink</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html</a>
		/// </summary>
		public Task<ShrinkIndexResponse> ShrinkAsync(IShrinkIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IShrinkIndexRequest, ShrinkIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.split</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html</a>
		/// </summary>
		public SplitIndexResponse Split(IndexName index, IndexName target, Func<SplitIndexDescriptor, ISplitIndexRequest> selector = null) => Split(selector.InvokeOrDefault(new SplitIndexDescriptor(index: index, target: target)));
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.split</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html</a>
		/// </summary>
		public Task<SplitIndexResponse> SplitAsync(IndexName index, IndexName target, Func<SplitIndexDescriptor, ISplitIndexRequest> selector = null, CancellationToken ct = default) => SplitAsync(selector.InvokeOrDefault(new SplitIndexDescriptor(index: index, target: target)), ct);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.split</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html</a>
		/// </summary>
		public SplitIndexResponse Split(ISplitIndexRequest request) => DoRequest<ISplitIndexRequest, SplitIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>PUT</c> request to the <c>indices.split</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-split-index.html</a>
		/// </summary>
		public Task<SplitIndexResponse> SplitAsync(ISplitIndexRequest request, CancellationToken ct = default) => DoRequestAsync<ISplitIndexRequest, SplitIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html</a>
		/// </summary>
		public IndicesStatsResponse Stats(Indices index = null, Func<IndicesStatsDescriptor, IIndicesStatsRequest> selector = null) => Stats(selector.InvokeOrDefault(new IndicesStatsDescriptor().Index(index: index)));
		/// <summary>
		/// <c>GET</c> request to the <c>indices.stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html</a>
		/// </summary>
		public Task<IndicesStatsResponse> StatsAsync(Indices index = null, Func<IndicesStatsDescriptor, IIndicesStatsRequest> selector = null, CancellationToken ct = default) => StatsAsync(selector.InvokeOrDefault(new IndicesStatsDescriptor().Index(index: index)), ct);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html</a>
		/// </summary>
		public IndicesStatsResponse Stats(IIndicesStatsRequest request) => DoRequest<IIndicesStatsRequest, IndicesStatsResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>GET</c> request to the <c>indices.stats</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-stats.html</a>
		/// </summary>
		public Task<IndicesStatsResponse> StatsAsync(IIndicesStatsRequest request, CancellationToken ct = default) => DoRequestAsync<IIndicesStatsRequest, IndicesStatsResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.unfreeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html</a>
		/// </summary>
		public UnfreezeIndexResponse Unfreeze(IndexName index, Func<UnfreezeIndexDescriptor, IUnfreezeIndexRequest> selector = null) => Unfreeze(selector.InvokeOrDefault(new UnfreezeIndexDescriptor(index: index)));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.unfreeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html</a>
		/// </summary>
		public Task<UnfreezeIndexResponse> UnfreezeAsync(IndexName index, Func<UnfreezeIndexDescriptor, IUnfreezeIndexRequest> selector = null, CancellationToken ct = default) => UnfreezeAsync(selector.InvokeOrDefault(new UnfreezeIndexDescriptor(index: index)), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.unfreeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html</a>
		/// </summary>
		public UnfreezeIndexResponse Unfreeze(IUnfreezeIndexRequest request) => DoRequest<IUnfreezeIndexRequest, UnfreezeIndexResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.unfreeze</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/unfreeze-index-api.html</a>
		/// </summary>
		public Task<UnfreezeIndexResponse> UnfreezeAsync(IUnfreezeIndexRequest request, CancellationToken ct = default) => DoRequestAsync<IUnfreezeIndexRequest, UnfreezeIndexResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.update_aliases</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public BulkAliasResponse BulkAlias(Func<BulkAliasDescriptor, IBulkAliasRequest> selector) => BulkAlias(selector.InvokeOrDefault(new BulkAliasDescriptor()));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.update_aliases</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<BulkAliasResponse> BulkAliasAsync(Func<BulkAliasDescriptor, IBulkAliasRequest> selector, CancellationToken ct = default) => BulkAliasAsync(selector.InvokeOrDefault(new BulkAliasDescriptor()), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.update_aliases</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public BulkAliasResponse BulkAlias(IBulkAliasRequest request) => DoRequest<IBulkAliasRequest, BulkAliasResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.update_aliases</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-aliases.html</a>
		/// </summary>
		public Task<BulkAliasResponse> BulkAliasAsync(IBulkAliasRequest request, CancellationToken ct = default) => DoRequestAsync<IBulkAliasRequest, BulkAliasResponse>(request, request.RequestParameters, ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.validate_query</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html</a>
		/// </summary>
		public ValidateQueryResponse ValidateQuery<TDocument>(Func<ValidateQueryDescriptor<TDocument>, IValidateQueryRequest> selector = null)
			where TDocument : class => ValidateQuery(selector.InvokeOrDefault(new ValidateQueryDescriptor<TDocument>()));
		/// <summary>
		/// <c>POST</c> request to the <c>indices.validate_query</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html</a>
		/// </summary>
		public Task<ValidateQueryResponse> ValidateQueryAsync<TDocument>(Func<ValidateQueryDescriptor<TDocument>, IValidateQueryRequest> selector = null, CancellationToken ct = default)
			where TDocument : class => ValidateQueryAsync(selector.InvokeOrDefault(new ValidateQueryDescriptor<TDocument>()), ct);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.validate_query</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html</a>
		/// </summary>
		public ValidateQueryResponse ValidateQuery(IValidateQueryRequest request) => DoRequest<IValidateQueryRequest, ValidateQueryResponse>(request, request.RequestParameters);
		/// <summary>
		/// <c>POST</c> request to the <c>indices.validate_query</c> API, read more about this API online:
		/// <para></para>
		/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/search-validate.html</a>
		/// </summary>
		public Task<ValidateQueryResponse> ValidateQueryAsync(IValidateQueryRequest request, CancellationToken ct = default) => DoRequestAsync<IValidateQueryRequest, ValidateQueryResponse>(request, request.RequestParameters, ct);
	}
}